40.3.11 使用Spock测试Spring Boot应用
如果想使用Spock测试Spring Boot应用,你需要为应用添加Spock的spock-spring依赖,该依赖已将Spring测试框架集成进Spock,怎么使用Spock测试Spring Boot应用取决于你使用的Spock版本。
注 Spring Boot为Spock 1.0提供依赖管理,如果希望使用Spock 1.1,你需要覆盖build.gradle或pom.xml文件中的spock.version属性。
当使用Spock 1.1时,只能使用上述注解,你可以使用@SpringBootTest注解你的Specification以满足测试需求。
当使用Spock 1.0时,@SpringBootTest将不能用于web项目,你需要使用@SpringApplicationConfiguration和@WebIntegrationTest(randomPort = true)。
不能使用@SpringBootTest也就意味着你失去了自动配置的TestRestTemplate bean,不过可以通过以下配置创建一个等价的bean:
@Configuration
static class TestRestTemplateConfiguration {
@Bean
public TestRestTemplate testRestTemplate(
ObjectProvider<RestTemplateBuilder> builderProvider,
Environment environment) {
RestTemplateBuilder builder = builderProvider.getIfAvailable();
TestRestTemplate template = builder == null ? new TestRestTemplate()
: new TestRestTemplate(builder.build());
template.setUriTemplateHandler(new LocalHostUriTemplateHandler(environment));
return template;
}
}